package com.lnsoft.cac.server.util;

import com.lnsoft.cac.server.handle.threadpools.ServiceInvokePools;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务
 */
@Component
@Slf4j
public class Timer {
    @Autowired
    private ServiceInvokePools invokePools;

    // 定时器触发线程池执行 ‘发送CAC和电压监测装置的心跳信息给CAG’.
    @Scheduled(cron = "0 0/2 * * * ?")
    public void uploadCACHeartbeatInfo() {
//
//        log.debug("定时器(上传CAC心跳和监测装置心跳)开始启动");
//        log.info(Long.toString(System.currentTimeMillis()));
        invokePools.uploadCACHeartbeatInfo();
    }


    // 定时器触发线程池执行 ‘发送电压数据、事件信息、流量信息给CAG’.
    @Scheduled(cron = "0/3 * * * * ?")
    public void uploadCACData() {
//
//        log.debug("定时器(上传电压数据、电压日/月统计数据)开始启动");
//        log.info(Long.toString(System.currentTimeMillis()));

        invokePools.executeUploadCACData();
    }

    @Scheduled(cron = "0/2 * * * * ?")
    public void sendCmdResult() {
//
        invokePools.sendCmdResult();
    }

    // 定时器触发线程池执行 ‘定时检查CAG在线状态：如果不在线，创建到CAG的webservice Client’.
    @Scheduled(cron = "0/5 * * * * ?")
    public void creatCAGWSClient() {
        invokePools.creatCAGWSClient();
    }

}
